/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

&soc {
	serial@f991e000 {
		status = "ok";
	};

	i2c@f9923000{
		atmel_mxt_ts@4a {
		compatible = "atmel,mxt-ts";
		reg = <0x4a>;
		interrupt-parent = <&msmgpio>;
		interrupts = <1 0x2002>;
		vdd_ana-supply = <&pm8110_l19>;
		vcc_i2c-supply = <&pm8110_l14>;
		atmel,reset-gpio = <&msmgpio 0 0x00>;
		atmel,irq-gpio = <&msmgpio 1 0x00>;
		atmel,panel-coords = <0 0 508 880>;
		atmel,display-coords = <0 0 480 800>;
		atmel,i2c-pull-up;
		atmel,no-force-update;
		atmel,no-lpm-support;
		atmel,cfg_1 {
			atmel,family-id = <0x81>;
			atmel,variant-id = <0x15>;
			atmel,version = <0x11>;
			atmel,build = <0xaa>;
			atmel,config = [
				/* Object 6, Instance = 0 */
				00 00 00 00 00 00
				/* Object 38, Instance = 0 */
				1D 05 00 1D 0B 0D 00 00
				/* Object 7, Instance = 0 */
				20 0A 32
				/* Object 8, Instance = 0 */
				19 00 14 14 FF 00 05 00 32 19
				/* Object 9, Instance = 0 */
				83 00 00 13 0B 00 20 32 01 03
				00 0A 05 30 0A 05 0A 00 70 03
				FC 01 04 2F 08 24 00 00 40 00
				00 0A 00 00 02
				/* Object 18, Instance = 0 */
				00 00
				/* Object 19, Instance = 0 */
				00 00 00 00 00 00
				/* Object 25, Instance = 0 */
				03 00 18 79 A8 61
				/* Object 58, Instance = 0 */
				00 00 00 00 00 00 00 00 00 00
				00
				/* Object 42, Instance = 0 */
				03 19 1E 14 80 05 00 00
				/* Object 46, Instance = 0 */
				04 03 08 10 00 00 00 00 00
				/* Object 47, Instance = 0 */
				00 00 00 00 00 00 00 00 00 00
				/* Object 48, Instance = 0 */
				1D C0 22 00 00 00 00 00 00 00
				20 19 00 06 06 00 00 64 04 40
				00 00 00 05 00 2A 00 00 00 19
				34 0C 00 00 00 00 00 00 00 00
				00 00 00 00 00 00 00 00 00 00
				00 00 00 00
				/* Object 55, Instance = 0 */
				00 00 00 00
				];
			};
		};

		synaptics@20 {
			compatible = "synaptics,rmi4";
			reg = <0x20>;
			interrupt-parent = <&msmgpio>;
			interrupts = <1 0x2002>;
			vdd-supply = <&pm8110_l19>;
			vcc_i2c-supply = <&pm8110_l14>;
			synaptics,reset-gpio = <&msmgpio 0 0x00>;
			synaptics,irq-gpio = <&msmgpio 1 0x2008>;
			synaptics,button-map = <139 102 158>;
			synaptics,i2c-pull-up;
			synaptics,power-down;
			synaptics,disable-gpios;
		};
	};

	gen-vkeys {
		compatible = "qcom,gen-vkeys";
		label = "atmel_mxt_ts";
		qcom,disp-maxx = <480>;
		qcom,disp-maxy = <800>;
		qcom,panel-maxx = <508>;
		qcom,panel-maxy = <880>;
		qcom,key-codes = <158 102 139>;
		qcom,y-offset = <35>;
	};

	gpio_keys {
		compatible = "gpio-keys";
		input-name = "gpio-keys";

		camera_snapshot {
			label = "camera_snapshot";
			gpios = <&msmgpio 73 0x1>;
			linux,input-type = <1>;
			linux,code = <0x2fe>;
			gpio-key,wakeup;
			debounce-interval = <15>;
		};

		camera_focus {
			label = "camera_focus";
			gpios = <&msmgpio 74 0x1>;
			linux,input-type = <1>;
			linux,code = <0x210>;
			gpio-key,wakeup;
			debounce-interval = <15>;
		};

		vol_up {
			label = "volume_up";
			gpios = <&msmgpio 72 0x1>;
			linux,input-type = <1>;
			linux,code = <115>;
			gpio-key,wakeup;
			debounce-interval = <15>;
		};
	};

	sound {
		qcom,audio-routing =
			"RX_BIAS", "MCLK",
			"INT_LDO_H", "MCLK",
			"MIC BIAS External", "Handset Mic",
			"MIC BIAS Internal2", "Headset Mic",
			"AMIC1", "MIC BIAS External",
			"AMIC2", "MIC BIAS Internal2",
			"MIC BIAS External", "Digital Mic1",
			"MIC BIAS External", "Digital Mic2",
			"DMIC1", "MIC BIAS External",
			"DMIC2", "MIC BIAS External";
		qcom,headset-jack-type-NC;
    };
};

&i2c_cdc  {
	msm8x10_wcd_codec@0d{
		compatible = "qcom,msm8x10-wcd-i2c";
		reg = <0x0d>;

		interrupt-parent = <&wcd9xxx_intc>;
		interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
			      17 18 19 20 21 22 23>;

		cdc-vdda-cp-supply = <&pm8110_s4>;
		qcom,cdc-vdda-cp-voltage = <1800000 2150000>;
		qcom,cdc-vdda-cp-current = <650000>;

		cdc-vdda-h-supply = <&pm8110_l6>;
		qcom,cdc-vdda-h-voltage = <1800000 1800000>;
		qcom,cdc-vdda-h-current = <25000>;

		cdc-vdd-px-supply = <&pm8110_l6>;
		qcom,cdc-vdd-px-voltage = <1800000 1800000>;
		qcom,cdc-vdd-px-current = <10000>;

		cdc-vdd-1p2v-supply = <&pm8110_l4>;
		qcom,cdc-vdd-1p2v-voltage = <1200000 1200000>;
		qcom,cdc-vdd-1p2v-current = <5000>;

		cdc-vdd-mic-bias-supply = <&pm8110_l20>;
		qcom,cdc-vdd-mic-bias-voltage = <3075000 3075000>;
		qcom,cdc-vdd-mic-bias-current = <25000>;

		qcom,cdc-micbias-ldoh-v = <0x3>;
		qcom,cdc-micbias-cfilt-sel = <0x0>;
		qcom,cdc-micbias-cfilt-mv = <2700>;
		qcom,cdc-mclk-clk-rate = <12288000>;

		qcom,cdc-static-supplies = "cdc-vdda-h",
					   "cdc-vdd-px",
					   "cdc-vdd-1p2v";

		qcom,cdc-on-demand-supplies = "cdc-vdda-cp",
					      "cdc-vdd-mic-bias";
		qcom,cdc-micbias1-ext-cap;
	};

	msm8x10_wcd_codec@77{
		compatible = "qcom,msm8x10-wcd-i2c";
		reg = <0x77>;
	};

	msm8x10_wcd_codec@66{
		compatible = "qcom,msm8x10-wcd-i2c";
		reg = <0x66>;
	};

	msm8x10_wcd_codec@55{
		compatible = "qcom,msm8x10-wcd-i2c";
		reg = <0x55>;
	};
};

&spmi_bus {
	qcom,pm8110@0 {
		qcom,leds@a100 {
			status = "okay";
			qcom,led_mpp_2 {
				label = "mpp";
				linux,name = "button-backlight";
				linux-default-trigger = "hr-trigger";
				qcom,default-state = "off";
				qcom,max-current = <40>;
				qcom,id = <6>;
				qcom,source-sel = <1>;
				qcom,mode-ctrl = <0x60>;
				qcom,mode = "manual";
			};
		};

		qcom,leds@a200 {
			status = "okay";
			qcom,led_mpp_3 {
				label = "mpp";
				linux,name = "wled-backlight";
				linux,default-trigger = "bkl-trigger";
				qcom,default-state = "on";
				qcom,max-current = <40>;
				qcom,id = <6>;
				qcom,source-sel = <8>;
				qcom,mode-ctrl = <0x10>;
				qcom,pwm-channel = <0>;
				qcom,pwm-us = <27>;
				qcom,vin-ctrl = <0x03>;
				qcom,mode = "pwm";
			};
		};
	};
};

&spmi_bus {
	qcom,pm8110@1 {
		qcom,vibrator@c000 {
			status = "okay";
			qcom,vib-timeout-ms = <15000>;
			qcom,vib-vtg-level-mV = <3100>;
		};
	};
};

&sdhc_1 {
	vdd-supply = <&pm8110_l17>;
	qcom,vdd-voltage-level = <2900000 2900000>;
	qcom,vdd-current-level = <200 400000>;

	vdd-io-supply = <&pm8110_l6>;
	qcom,vdd-io-always-on;
	qcom,vdd-io-voltage-level = <1800000 1800000>;
	qcom,vdd-io-current-level = <200 60000>;

	qcom,pad-pull-on = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
	qcom,pad-pull-off = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
	qcom,pad-drv-on = <0x7 0x4 0x4>; /* 16mA, 10mA, 10mA */
	qcom,pad-drv-off = <0x0 0x0 0x0>; /* 2mA, 2mA, 2mA */

	qcom,clk-rates = <400000 25000000 50000000 100000000 200000000>;
	qcom,bus-speed-mode = "HS200_1p8v", "DDR_1p8v";
	qcom,nonremovable;

	status = "ok";
};

&sdhc_2 {
	vdd-supply = <&pm8110_l18>;
	qcom,vdd-voltage-level = <2950000 2950000>;
	qcom,vdd-current-level = <15000 400000>;

	vdd-io-supply = <&pm8110_l21>;
	qcom,vdd-io-voltage-level = <1800000 2950000>;
	qcom,vdd-io-current-level = <200 50000>;

	qcom,pad-pull-on = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
	qcom,pad-pull-off = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
	qcom,pad-drv-on = <0x7 0x4 0x4>; /* 16mA, 10mA, 10mA */
	qcom,pad-drv-off = <0x0 0x0 0x0>; /* 2mA, 2mA, 2mA */

	qcom,clk-rates = <400000 25000000 50000000 100000000 200000000>;

	#address-cells = <0>;
	interrupt-parent = <&sdhc_2>;
	interrupts = <0 1 2>;
	#interrupt-cells = <1>;
	interrupt-map-mask = <0xffffffff>;
	interrupt-map = <0 &intc 0 125 0
			1 &intc 0 221 0
			2 &msmgpio 42 0x3>;
	interrupt-names = "hc_irq", "pwr_irq", "status_irq";
	cd-gpios = <&msmgpio 42 0x1>;

	status = "ok";
};

&pm8110_chg {
	status = "ok";
	qcom,charging-disabled;
	qcom,use-default-batt-values;

	qcom,chgr@1000 {
		status = "ok";
	};

	qcom,buck@1100 {
		status = "ok";
	};

	qcom,usb-chgpth@1300 {
		status = "ok";
	};

	qcom,chg-misc@1600 {
		status = "ok";
	};
};

&pm8110_gpios {
	gpio@c000 { /* GPIO 1 */
	};

	gpio@c100 { /* GPIO 2 */
	};

	gpio@c200 { /* GPIO 3 */
	};

	gpio@c300 { /* GPIO 4 */
	};
};

&pm8110_mpps {
	mpp@a000 { /* MPP 1 */
	};

	mpp@a100 { /* MPP 2 */
		status = "disabled";
	};

	mpp@a200 { /* MPP 3 */
		status = "disabled";
	};

	mpp@a300 { /* MPP 4 */
		/* PA_THERM config */
		qcom,mode = <4>; /* AIN input */
		qcom,invert = <1>; /* Enable MPP */
		qcom,ain-route = <3>; /* AMUX 8 */
		qcom,master-en = <1>;
		qcom,src-sel = <0>; /* Function constant */
	};
};

/* CoreSight */
&tpiu {
	qcom,seta-gpios = <&msmgpio 4 0>,
			  <&msmgpio 5 0>,
			  <&msmgpio 6 0>,
			  <&msmgpio 7 0>,
			  <&msmgpio 22 0>,
			  <&msmgpio 23 0>,
			  <&msmgpio 24 0>,
			  <&msmgpio 25 0>,
			  <&msmgpio 26 0>,
			  <&msmgpio 27 0>,
			  <&msmgpio 28 0>,
			  <&msmgpio 29 0>,
			  <&msmgpio 30 0>,
			  <&msmgpio 31 0>,
			  <&msmgpio 94 0>,
			  <&msmgpio 95 0>,
			  <&msmgpio 96 0>,
			  <&msmgpio 97 0>;
	qcom,seta-gpios-func = <9 9 8 11 2 2 2 2 2 2 3 2 3 3 4 4 4 4>;
	qcom,seta-gpios-drv =  <7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7>;
	qcom,seta-gpios-pull = <0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>;
	qcom,seta-gpios-dir =  <2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2>;

	qcom,setb-gpios = <&msmgpio 8 0>,
			  <&msmgpio 10 0>,
			  <&msmgpio 11 0>,
			  <&msmgpio 13 0>,
			  <&msmgpio 14 0>,
			  <&msmgpio 15 0>,
			  <&msmgpio 16 0>,
			  <&msmgpio 17 0>,
			  <&msmgpio 18 0>,
			  <&msmgpio 19 0>,
			  <&msmgpio 20 0>,
			  <&msmgpio 21 0>,
			  <&msmgpio 42 0>,
			  <&msmgpio 80 0>,
			  <&msmgpio 81 0>,
			  <&msmgpio 82 0>,
			  <&msmgpio 83 0>,
			  <&msmgpio 84 0>;
	qcom,setb-gpios-func = <10 8 8 6 9 9 9 9 9 9 9 9 5 7 7 8 8 8>;
	qcom,setb-gpios-drv =  <7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7>;
	qcom,setb-gpios-pull = <0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>;
	qcom,setb-gpios-dir =  <2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2>;
};

&mdss_mdp {
	qcom,mdss-pref-prim-intf = "dsi";
};

&mdss_dsi0 {
	qcom,dsi-pref-prim-pan = <&dsi_truly_wvga_vid>;
};

&dsi_truly_wvga_vid {
	qcom,cont-splash-enabled;
};

&dsi_truly_wvga_cmd {
	qcom,cont-splash-enabled;
};
